//
// Created by livio on 2023/3/4.
//

#ifndef CPPDEMO_IIOMANAGER_H
#define CPPDEMO_IIOMANAGER_H

#include "IIOObject.h"
#include "IOEvent.h"

class IIOManager : public std::enable_shared_from_this<IIOManager> {
public:
    IIOManager() = default;

    virtual ~IIOManager() = default;

    /**
     * register the io event
     * @param object  the object of IO
     * @param event   the event of IO
     */
    virtual void registerEvent(const IIOObject &object, const IOEvent &event) = 0;

    /**
     * unregister the io event
     * @param object  the object of IO
     */
    virtual void unregisterEvent(const IIOObject &object) = 0;

    /**
     * update the io event
     * @param object  the object of IO
     * @param event   the event of IO
    */
    virtual void updateEvent(const IIOObject &object, const IOEvent &event) = 0;
};


#endif //CPPDEMO_IIOMANAGER_H
